﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PhongMachTu.OModel;
using PhongMachTu.OConnection;

namespace PhongMachTu.OForm
{
    public partial class FormPatient : Form
    {
        private ArrayList patients;
        private int paID;

        public ArrayList Patients
        {
            get { return patients; }
            set { patients = value; }
        }

        public FormPatient()
        {
            InitializeComponent();
        }

        private void lvPatient_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvPatient.SelectedItems.Count == 0) return;
            ListViewItem lvItem = lvPatient.SelectedItems[0];
            Patient pa = (Patient)lvItem.Tag;
            txtFullname.Text = pa.Fullname;
            txtAddress.Text = pa.Address;
            txtBirthYear.Text = pa.Dob.ToString("yyyy");
            if (pa.Sex)
            {
                rbMale.Checked = true;
            }
            else
            {
                rbFemale.Checked = true;
            }
            paID = pa.PatienId;
        }

        private void btnAddPa_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {

                if (txtFullname.Text == "")
                {
                    MessageBox.Show("Chưa nhập tên");
                }
                else if (!rbMale.Checked && !rbFemale.Checked)
                {
                    MessageBox.Show("Chưa chọn giới tính");
                }
                else if (txtBirthYear.Text == "")
                {
                    MessageBox.Show("Chưa nhập năm sinh");
                }
                else if (txtAddress.Text == "")
                {
                    MessageBox.Show("Chưa nhập địa chỉ");
                }
                else
                {
                    int birthyear = int.Parse(txtBirthYear.Text);
                    string fullname = txtFullname.Text;
                    string address = txtAddress.Text;
                    bool gender;
                    if (rbMale.Checked)
                    {
                        gender = true;
                    }
                    else
                    {
                        gender = false;
                    }
                    if (DataManipulate.checkPaInfo(fullname, address, gender, birthyear))
                    {
                        MessageBox.Show("Thông tin bệnh nhân đã tồn tại.");
                    }
                    else
                    {
                        bool result = DataManipulate.addPatient(fullname, address, gender, birthyear);
                        if (result)
                        {
                            MessageBox.Show("Thêm bệnh nhân thành công !");
                            txtFullname.Text = "";
                            txtBirthYear.Text = "";
                            txtAddress.Text = "";
                            rbFemale.Checked = false;
                            rbMale.Checked = false;
                            refresh();
                        }
                        else
                        {
                            MessageBox.Show("Thêm thất bại. Vui lòng thử lại!", "Lỗi");
                        }
                    }
                }
            }
            else
            {
                FormManager.patientForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnEditPa_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                if (txtFullname.Text == "")
                {
                    MessageBox.Show("Chưa nhập tên");
                }
                else if (!rbMale.Checked && !rbFemale.Checked)
                {
                    MessageBox.Show("Chưa chọn giới tính");
                }
                else if (txtBirthYear.Text == "")
                {
                    MessageBox.Show("Chưa nhập năm sinh");
                }
                else if (txtAddress.Text == "")
                {
                    MessageBox.Show("Chưa nhập địa chỉ");
                }
                else
                {
                    int birthyear = int.Parse(txtBirthYear.Text);
                    string fullname = txtFullname.Text;
                    string address = txtAddress.Text;
                    bool gender;
                    if (rbMale.Checked)
                    {
                        gender = true;
                    }
                    else
                    {
                        gender = false;
                    }
                    if (DataManipulate.checkPaInfo(paID, fullname, address, gender, birthyear))
                    {
                        MessageBox.Show("Thông tin bệnh nhân đã tồn tại. Cập nhập thất bại!");
                    }
                    else
                    {
                        bool result = DataManipulate.updatePatient(paID, fullname, address, gender, birthyear);
                        if (result)
                        {
                            MessageBox.Show("Sửa thông tin thành công !");
                            txtFullname.Text = "";
                            txtBirthYear.Text = "";
                            txtAddress.Text = "";
                            rbFemale.Checked = false;
                            rbMale.Checked = false;
                            refresh();
                        }
                        else
                        {
                            MessageBox.Show("Thêm thất bại. Vui lòng thử lại!", "Lỗi");
                        }
                    }
                }
            }
            else
            {
                FormManager.patientForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        public void refresh()
        {
            patients = DataManipulate.getAllPatient();
            loadData();
        }

        public void loadData()
        {
            lvPatient.Items.Clear();
            if (patients != null)
            {
                for (int i = 0; i < patients.Count; i++)
                {
                    int stt = i + 1;
                    Patient pa = (Patient)patients[i];
                    int id = pa.PatienId;
                    String fullname = pa.Fullname;
                    bool g = pa.Sex;
                    String gender = "";
                    if (g)
                    {
                        gender = "Nam";
                    }
                    else
                    {
                        gender = "Nữ";
                    }
                    int birthyear = int.Parse(pa.Dob.ToString("yyyy"));
                    String address = pa.Address;

                    ListViewItem item = new ListViewItem(stt.ToString());
                    item.SubItems.Add(id.ToString());
                    item.SubItems.Add(fullname);
                    item.SubItems.Add(gender);
                    item.SubItems.Add(birthyear.ToString());
                    item.SubItems.Add(address);
                    item.Tag = pa;
                    lvPatient.Items.Add(item);
                }
            }
        }

        private void FormPatient_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            FormManager.mainForm.Show();
            FormManager.patientForm.Hide();
        }
    }
}
